def test_return():
    """
    多返回值
    :return: 返回值1 返回值2
    """
    return 1, 2


x, y = test_return()
print(x, y)


def user_info(name, age, gender):
    print(f"Name: {name}-Age: {age}-Gender: {gender}")


# 位置顺序传参
user_info("小明", 20, "男")

# 关键字传参
user_info(name="曹梓童", gender="男", age=23)


def default_info(name, score, is_pass="是"):
    """
    默认值
    :param name:
    :param score:
    :param is_pass: 默认值必须在最后，如果调用方法时不传的话使用默认值
    :return:
    """
    print(f"name = {name}, score = {score}, is_pass = {is_pass}")


default_info("czt", 99)
default_info("ljx", 23, "否")


def args_info(*args):
    """
    可变参数 1，2，3...
    :param args: 可以传入多个参数，参数会放入元组中
    :return: 返回值
    """
    print(f"args = {args}")


def kwargs_info(**kwargs):
    """
    可变参数字典 name = 'czt', age = 20, gender = '男'...
    :param kwargs: 可以传入多个参数，参数会放入字典中
    :return: 返回值
    """
    print(f"kwargs = {kwargs}")


def test_func(add1):
    """
    在一个方法中传入方法
    :param add1: 相加方法
    :return: 返回值
    """
    result = add1(1, 2)
    print(result)


def add2(z, c):
    return z + c


test_func(add2)
# 只能使用一次，lambda函数  语法： lambda 传入参数：函数体(一行代码)
test_func(lambda z, c: z + c)


